package com.alks.function.mapper.stockdept.pcfactorystockquery;

import com.alks.entity.data.entity.PcSlipTempPartBf;
import com.alks.entity.data.entity.pcMtlAccPartBf;
import com.alks.function.data.vo.controller.stockdept.MtlDocumentVo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;

import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;
import java.util.Map;

/**
 * <p>
 *  Mapper 接口
 * </p>
 *
 * @author ms
 * @since 2023-12-04
 */
public interface SD_SQ_PcMtlAccPartBfMapper extends BaseMapper<pcMtlAccPartBf> {

    /*找出最大物料编号*/
    String selectMtlMax(@Param("mtlTypeNo") String mtlTypeNo);

    void csmInDetailAdd(@Param("temp") PcSlipTempPartBf temp);

    /**
     * 回滚入库库存
     * @param mtlNos
     * @param companyId
     */
    void stkReduceByMap(@Param("mtlNos") Map<String, BigDecimal> mtlNos, @Param("companyId") String companyId);

    /**
     * 回滚出库库存
     * @param mtlNos
     * @param companyId
     */
    void stkAddByMap(@Param("mtlNos") Map<String, BigDecimal> mtlNos, @Param("companyId") String companyId);

    /**
     * 通用入库
     * @param mtlNos
     * @param companyId
     */
    void stkInByMap(@Param("mtlNos") Map<String, BigDecimal> mtlNos, @Param("companyId") String companyId);

    /**
     * 通用出库
     * @param mtlNos
     * @param companyId
     */
    void stkOutByMap(@Param("mtlNos") Map<String, BigDecimal> mtlNos, @Param("companyId") String companyId);

    /**
     * 更新单据时间
     * @param mtlNos
     */
    void recDateUp(@Param("mtlNos") List<String> mtlNos, @Param("date") LocalDateTime date , @Param("companyId") String companyId);

    /**
     * 更新交易时间
     * @param mtlNos
     */
    void traDateUp(@Param("mtlNos") List<String> mtlNos, @Param("date") LocalDateTime date , @Param("companyId") String companyId);

    /**
     * 通过物料编号和公司ID获取库存
     * @param mtlNos
     * @param companyId
     * @return
     */
    List<Map<String, Object>> getStkQty(@Param("mtlNos") List<String> mtlNos, @Param("companyId") String companyId);

    /**
     * 判断是否建党
     * @param mtlNos 物料编号
     * @param companyId 公司ID
     * @return stkQty和mtlNo
     */
    List<String> mtlNoDocumentCheck(@Param("mtlNos") List<String> mtlNos, @Param("companyId") String companyId);

    /**
     * 通用建党
     * @param vos 建档数据
     */
    void mtlDocumentCreate(@Param("vos") List<MtlDocumentVo> vos);

    /**
     * 通过临时表插入库存
     * @param miss 缺失物料编号
     * @param companyId 公司ID
     */
    void insertByTemp(@Param("miss") List<String> miss, @Param("companyId") String companyId);
}
